#include <stdio.h>


//计算n的阶乘
// int main()
// {
//     int i = 1;
//     int n = 0;
//     int res = 1;
//     scanf("%d",&n);
//     for (i = 1;i <= n;i++)
//     {
//         res = res * i;
//     }
//     printf("%d\n",res);
//     return 0;
// }



//计算1！+2！+3！+···+10！
// int ret(int a)
// {
//     int j = 1;
//     int res = 1;
//     for (j = 1;j <= a;j++)
//     {
//         res = res * j;
//     }
//     return res;
// }
// int main()
// {
//     int i = 1;
//     int sum = 0;
//     for (i = 1;i <= 10;i++)
//     {
//         sum += ret(i);
//     }
//     printf("%d",sum);
//     return 0;
// }
//超级简单的写法
// int main()
// {
//     int i = 0;
//     int ret = 1;
//     int n = 10;
//     int sum = 0;
//     for (i = 1; i <= n;i++)
//     {
//         ret = ret * i;
//         sum += ret;
//     }
//     printf("%d",sum);
//     return 0;
// }





//从一个有序数组中查找一个数 讲解二分查找
// int main()
// {
//     int arr[]={1,2,3,4,5,6,7,8,9,10};
//     int n = 0;
//     scanf("%d",&n);
//     int i = 0;
//     int j = sizeof(arr)/sizeof(int);//sizeof(arr)/sizeof(arr[0]);
//     int mid = 0;
//     while (arr[mid] != n)//判断条件错了，因为n不一定在数组数值范围内 应该为 i<= j
//     {
//         int mid = (i + j )/2;
//         if (arr[mid] > n)
//         {
//             j = mid;//应该写 j = mid - 1；
//             // mid = (i + j)/2;  注意！ 把第70行代码放入while循环内，则两个if条件里就不用再写了 减少一行代码
//         }
//         else if(arr[mid] < n)
//         {
//             i = mid; //应该写 i = mid + 1；
//             // mid = (i + j)/2;
//         }
//     }
//     printf("%d\n",mid);
// }
//正确写法：：：
// int main()
// {
//     int arr[]={1,2,3,4,5,6,7,8,9,10};
//     int n = 0;
//     scanf("%d",&n);
//     int left = 0;
//     int right = (sizeof(arr)/sizeof(arr[0])) - 1;
//     while (left <= right)
//     {
//         int mid = (left + right) / 2;//为避免溢出，可写成 left +（right - left）/2 
//         if (arr[mid] < n)
//         {
//             left = mid + 1;
//         }
//         else if(arr[mid] > n)
//         {
//             right = mid - 1;
//         }
//         else
//         {
//             printf("找到了，下标是%d\n",mid);
//             break;  //很重要，不要忘记加
//         }
//     }
//     if (left > right)
//     printf("找不到！\n");
// }





// //演示字幕从两头向中间汇聚显示的效果
// #include <stdlib.h>
// int main()
// {
//     char arr1[] = "welcome to china";
//     char arr2[] = "################";
//     int left = 0;
//     int right = sizeof(arr1) / sizeof(arr1[0]) - 2;//=strlen(arr1) - 1;strlen求长度不含\0
//     while(left <= right)
//     {
//         arr2[left] = arr1[left];
//         arr2[right] = arr1[right];
//         printf("%s\n",arr2);
//         //Sleep(1000);//休眠1000ms，库函数为windows.h,mac上不知道用什么代替
//         //清空屏幕,库函数为stdlib.h，mac可能为“clear”；
//         // system("cls");
//         left ++;
//         right --;
//     }
// }




//模拟用户登陆输入密码，三次错误后退出
#include <string.h>
int main()
{
    int i = 0;
    char password[20]={ 0 };
    //假设密码是abcdef
    for(i = 0; i <= 2;i ++)
    {
        printf("请输入密码：\n");
        scanf("%s",password);
        if (strcmp(password,"abcdef") == 0)//字符串之间比较，不能直接用==，需要借助库函数
        {
            printf("密码正确，登录成功\n");
            break; //break老是忘记写
        }
        else
        {
            printf("密码输入错误\n");
        }
    }
    if (3 == i)
    {
        printf("输入错误次数过多，已锁定\n");
    }
    
}